//
//  QBEmoticonToolBar.swift
//  04-表情键盘
//
//  Created by bing on 16/4/1.
//  Copyright © 2016年 bing. All rights reserved.
//

import UIKit

// 定义协议
protocol QBEmoticonToolBarDelegate: NSObjectProtocol {
    
    func emoticonToolBar(toolBar: QBEmoticonToolBar,didSelectType type: QBEmoticonToolBarButtonType)
}

/// 定义tag对应的枚举
enum QBEmoticonToolBarButtonType: Int {
    case Recent = 0
    case Default = 1
    case Emoji = 2
    case Lxh = 3
}

class QBEmoticonToolBar: UIView {

    // MARK: - 定义属性
    weak var delegate: QBEmoticonToolBarDelegate?
    
    /// 上一次选中的按钮
    private var selectedButton: UIButton?
    
    class func emoticonToolBar() -> QBEmoticonToolBar {
        
        return NSBundle.mainBundle().loadNibNamed("QBEmoticonToolBar", owner: nil, options: nil).last as! QBEmoticonToolBar
    }
    // 构造函数,子类实现构造函数就不会继承父类的构造函数,如果只实现init(frame:)构造函数,意味着只能使用代码来创建控件,但是UI控件是既能通过代码,也能通过sb/xib来加载
//    override init(frame: CGRect) {
//        super.init(frame: frame)
//    }
    // 从sb/xib里面加载控件会走这里
//    required init?(coder aDecoder: NSCoder) {
//        //fatalError("init(coder:) has not been implemented")
//        super.init(coder: aDecoder)
//    }
    
    
    @IBAction func didClickButton(button: UIButton) {
        
        switchSelectedButton(button)
        // 调用代理，告诉keyboard选中了那个组
        let type = QBEmoticonToolBarButtonType(rawValue: button.tag)!
        
        delegate?.emoticonToolBar(self, didSelectType: type)
        
    }
    
    override func willMoveToSuperview(newSuperview: UIView?) {
        
        super.willMoveToSuperview(newSuperview)
        
        // 默认选中第0组
        switchSelectedButtonWithSection(0)
    }
    
    // MARK: - 公开方法
    /**
    选中某个的按钮
    
    - parameter section: collectionView所对应的组
    */
    func switchSelectedButtonWithSection(section: Int) {
        // 找到对应的按钮
        let button = self.subviews[section] as! UIButton
        
        switchSelectedButton(button)
    }
    
    /**
         切换选中按钮
         
         - parameter button: 要选中按钮
     */
    private func switchSelectedButton(button: UIButton) {
        
        if button == selectedButton {
            return
        }
        // 取消上一次选中的按钮
        selectedButton?.selected = false
        
        // 将当前上一次选中的按钮
        button.selected = true
        
        // 将当前按钮赋值给上一次选中的按钮
        selectedButton = button
    }

}
